package com.example.controller;

import com.example.pojo.Result;
import com.example.utils.AliyunOSSOperator;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.channels.MulticastChannel;
import java.util.UUID;

@Slf4j
@RestController
public class UploadController {
    //本地存储文件方案
//    @PostMapping("/upload")
//    public Result upload(String name, Integer age , MultipartFile file) throws IOException {
//        log.info("文件上传接受参数{},{},{}"+name,age,file);
//        //获取原始文件名
//        String originalFilename = file.getOriginalFilename();
//        //获取文件名后缀
//        String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
//        //生成新的文件名
//        String newFileName = UUID.randomUUID().toString()+".png";
//        //保存文件
//        file.transferTo(new File("D:/wenjian/"+newFileName));
//        return Result.success();
//    }

    //阿里云文件存储方案
    @Autowired
    private AliyunOSSOperator aliyunOSSOperator;

    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws Exception {
        // 记录文件上传的接受参数信息
        log.info("文件上传接受参数{}",file.getOriginalFilename());
        // 调用阿里云OSS操作类的上传方法，将文件字节流和文件名作为参数传递，完成文件上传
        String url = aliyunOSSOperator.upload(file.getBytes(), file.getOriginalFilename() );
        // 记录文件上传的返回参数信息，即文件的访问URL
        log.info("文件上传返回参数{}",url);
        // 返回上传成功的结果，包含文件的访问URL
        return Result.success(url);
    }
}
